﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Windows.Forms;

public partial class UserControl_SendMessage : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
      

        if (!IsPostBack)
        {
            string MaTinNhan = Request.QueryString["MaTinNhan"];
            string MaTinNhanF = Request.QueryString["MaTinNhanF"];

            if (MaTinNhan != null && MaTinNhan != "")
            {
                int maTinNhan = int.Parse(MaTinNhan);
                Reply(maTinNhan);
            }
            else if (MaTinNhanF != null && MaTinNhanF != "")
            {
                int maTinNhan = int.Parse(MaTinNhanF);
                Forward(maTinNhan);
            } 
        }
              
    }
    private void Reply(int maTinNhan)
    {
        LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
        var messageList = from p in db.TIN_NHANs
                          join c in db.NGUOI_DUNGs on p.MaNguoiGoi equals c.MaNguoiDung
                          where p.MaTinNhan == maTinNhan
                          select p;
        if (messageList.Any() == false)
        {
            lblGuiTinNhan.Text = "Tin nhắn này đã bị xóa hoặc không tồn tại";
        }
        else
        {
            txtTenTKNguoiNhan.Text = messageList.First().NGUOI_DUNG.TenDangNhap.ToString();
            txtTieuDeTinNhan.Text = "Re: " + messageList.First().TieuDeTinNhan.ToString();
            edtNoiDungTinNhan.Content = messageList.First().NoiDungTinNhan.ToString()
                + "\n -------------------------------------------------------------------------------------------";
        }   
    }

    private void Forward(int maTinNhan)
    {
        LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();
        var messageList = from p in db.TIN_NHANs
                          join c in db.NGUOI_DUNGs on p.MaNguoiGoi equals c.MaNguoiDung
                          where p.MaTinNhan == maTinNhan
                          select p;
        if (messageList.Any() == false)
        {
            lblGuiTinNhan.Text = "Tin nhắn này đã bị xóa hoặc không tồn tại";
        }
        else
        {            
            txtTieuDeTinNhan.Text = "Forward: " + messageList.First().TieuDeTinNhan.ToString();
            edtNoiDungTinNhan.Content = "Người Gửi: " + messageList.First().NGUOI_DUNG.TenDangNhap.ToString()
                + messageList.First().NoiDungTinNhan.ToString() + "\nThời gian gửi" + messageList.First().ThoiGianNhanTin.ToString()
                + "\n -------------------------------------------------------------------------------------------";
        }
    }

    protected void btnSendMessage_Click(object sender, EventArgs e)
    {
        string sTenDangNhap = (string)Session["TenDangNhap"];

        if (sTenDangNhap == null)
        {
            MessageBox.Show("Vui lòng đăng nhập lại!!", "Error");
            return;
        }
        else
        {
            LinQ_RaoVatDataContext db = new LinQ_RaoVatDataContext();

            NGUOI_DUNG nguoiGui = new NGUOI_DUNG();

            try
            {
                nguoiGui = db.NGUOI_DUNGs.Single(q => q.TenDangNhap == sTenDangNhap && q.Deleted == false);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Tài khoản người nhận không tồn tại!!", "Error");
                return;
            }

            
            NGUOI_DUNG nguoiNhan = new NGUOI_DUNG();
            if (txtTieuDeTinNhan.Text != "")
            {
                string chuoiNguoiNhan = txtTenTKNguoiNhan.Text;
                string[] dsNguoiNhan = chuoiNguoiNhan.Split(';').Select(o => o.Trim()).ToArray();
                for (int i = 0; i < dsNguoiNhan.Count(); i++)
                {
                    try
                    {
                        nguoiNhan = db.NGUOI_DUNGs.Single(q => q.TenDangNhap == dsNguoiNhan[i] && q.Deleted == false);
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show("Tài khoản người nhận không tồn tại!!", "Error");
                        return;
                    }
                    TIN_NHAN tinNhan = new TIN_NHAN();
                    int soLuongTinNhan = db.TIN_NHANs.Count();
                    tinNhan.MaTinNhan = soLuongTinNhan + 1;
                    tinNhan.MaNguoiGoi = nguoiGui.MaNguoiDung;
                    tinNhan.MaNguoiNhan = nguoiNhan.MaNguoiDung;
                    tinNhan.TieuDeTinNhan = txtTieuDeTinNhan.Text;
                    tinNhan.NoiDungTinNhan = edtNoiDungTinNhan.Content;
                    tinNhan.Readed = false;
                    tinNhan.Deleted = false;
                    tinNhan.ThoiGianNhanTin = DateTime.Now;
                    db.TIN_NHANs.InsertOnSubmit(tinNhan);
                    db.SubmitChanges();
                }
                //       MessageBox.Show("Gửi tin nhắn thành công!!", "Success");
                Response.Redirect("XemTinNhan.aspx");
            }
            else
            {
                MessageBox.Show("Bạn Chưa Nhập Tiêu Đề!!", "Error");
                return;
            }
        }
    }
}
